package List.project;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*
    List接口的使用：特点：有序，有下标(index)，元素可以重复
 */
public class PracticeMain {
    public static void main(String[] args) {
        List list = new ArrayList();//可以new List接口下面的所有实现类
        //1.添加元素
        list.add("华为");
        list.add("小米");
        list.add("苹果");
        list.add(20); //注意：这里进行的自动装箱变成了integer包装类，所以在删除的时候不能再以20去删除
        list.add(60); //注意：这里进行的自动装箱变成了integer包装类，所以在删除的时候不能再以20去删除
        list.add(50); //注意：这里进行的自动装箱变成了integer包装类，所以在删除的时候不能再以20去删除
        System.out.println(list.size());
        System.out.println(list.toString());
        //2.删除元素
        list.remove("华为");
        //删除20；方法1
        //list.remove(2);//利用角标
        //方法2:若就要以20去删除，则将其类型转为包装类即可
        list.remove(Integer.valueOf(20));

        //3.遍历操作
        //方法1：利用for，应为有角标
        for (int i = 0;i<list.size();i++){
            System.out.println(list.get(i));//get方法根据角标来获取元素，返回的是object类型
        }

        //方法2：增强for
        for (Object object : list) {
            System.out.println(object);
        }

        //发法3：Iterator迭代器
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        //方法4：使用列表迭代器：ListIterator迭代器（是Iterstor的子接口）---功能更全面
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            System.out.println(listIterator.nextIndex()+":"+listIterator.next());
        }

        //4.判断
        //5.获取元素位置
        System.out.println(list.indexOf("苹果"));

        //补充方法：subList:截取并返回子集合,含头不含尾
        List sub = list.subList(1,3);
        System.out.println(sub.toString());
    }
}
